package com.shexianyu.simple;

import java.util.HashMap;
import java.util.Set;

/**
 * 242. 有效的字母异位词
 */
public class IsAnagram {
    public boolean isAnagram(String s, String t) {
        //1.字符串 s 和字符串 t不相等直接返回false
        if (s.length() != t.length()) return false;
        //2.定义map集合
        HashMap<Character, Integer> map = new HashMap<>();
        //3.使用map集合存储每个字符出现的次数
        for (int i = 0; i < s.length(); i++) {
            map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
        }
        //4.与字符串t进行判断
        for (int i = 0; i < t.length(); i++) {
            //5.若map集合中不包含字符串t中的字符，返回false
            if (!map.containsKey(t.charAt(i))) return false;
            //6.将匹配到的字符在map集合中，次数-1
            map.put(t.charAt(i), map.get(t.charAt(i)) - 1);
        }
        //7.遍历map集合
        Set<Character> set = map.keySet();
        for (Character ch : set) {
            //8.判断循环中，字符次数是否为0，若为0则跳出本次循环；否则不为0则返回false
            if (map.get(ch) == 0)
                break;
            else
                return false;
        }
        return true;
    }
}
